/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.distrimas.senta.dominio.compras.facturacompra;

import com.distrimas.senta.dominio.compras.ordencompra.OrdenCompraDAO;
import com.distrimas.senta.servicios.conexion.Conexion;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 *
 * @author Administrador
 */
public class FacturaCompraDAO {
   private static FacturaCompraDAO dao;
    public static FacturaCompraDAO getFacturaCompraDAO(){
        if(getDao()==null){
            setDao(new FacturaCompraDAO());
        }
        return getDao();
    }

    public boolean ingresarFactura(FacturaCompraDTO facturaCompra){
        boolean resultado=true;
        Connection cone=null;
        try {
            cone=Conexion.getConnection();
            PreparedStatement p = cone.prepareStatement(FacturaCompraDAOHelper.ingresarFacturaCompra());
            p.setString(1, facturaCompra.getCodigo());
            p.setDate(2, facturaCompra.getFechaExpedicion());
            p.setDate(3, facturaCompra.getFechaPago());
            p.setDate(4, facturaCompra.getFecharecibo());
            p.setFloat(5, facturaCompra.getIva());
            p.setFloat(6, facturaCompra.getTotal());
            p.setFloat(7, facturaCompra.getRetefuente());
            p.setFloat(8, facturaCompra.getReteiva());
            p.setString(9, facturaCompra.getOrdenCompra().getCodigo());
            p.setFloat(10, facturaCompra.getBase());
            p.setString(11, facturaCompra.getEstado());
            p.execute();
        } catch (Exception e) {
            e.printStackTrace();
            resultado=false;
        }finally{
            try {
              Conexion.returnConnection(cone);
            } catch (Exception e) {
            }
        }
        return resultado;
    }

    public FacturaCompraDTO consultarFacturaCompra(String s){
        FacturaCompraDTO result=new FacturaCompraDTO();
        OrdenCompraDAO orden=OrdenCompraDAO.getOrdenCompraDAO();
        Connection con=null;
    try{
        con= Conexion.getConnection();
        PreparedStatement p= con.prepareStatement (FacturaCompraDAOHelper.consultarFacturaCompra());
        p.setString(1, s);
        ResultSet r= p.executeQuery();
        while(r.next()){
            result.setCodigo(r.getString(1));
            result.setFechaExpedicion(r.getDate(2));
            result.setFechaPago(r.getDate(3));
            result.setFechaRecibo(r.getDate(4));
            result.setIva(r.getFloat(5));
            result.setTotal(r.getFloat(6));
            result.setRetefuente(r.getFloat(7));
            result.setReteeiva(r.getFloat(8));
           // result.setAuxiliarencargado(facadeCont.getEmpleado(r.getString(9)));//este es el que debe quedar
            result.setOrdenCompra(orden.consultarOrdenCompra(r.getString(9)));//para que funcione
            result.setBase(r.getFloat(10));
            result.setEstado(r.getString(11));
        }
} catch (Exception ex){
        ex.printStackTrace();
    }
    finally{
        try{
            Conexion.returnConnection(con);
        }
        catch (Exception clo){
        }
    }
    return result;
    }

    public boolean actualizarEstado(FacturaCompraDTO factura){
        boolean result = true;
        Connection con=null;
        try{
            con= Conexion.getConnection();
            PreparedStatement p= con.prepareStatement (FacturaCompraDAOHelper.actualizarEstado());
            p.setString(1, factura.getCodigo());
            p.setString(2, factura.getEstado());
            p.execute();
        }
        catch (Exception e){
            e.printStackTrace();
            result=false;
        }
        finally{
            try{
                Conexion.returnConnection(con);
            }
            catch (Exception e){
            }
        }
        return result;
    }

        /**
     * @return the dao
     */
    public static FacturaCompraDAO getDao() {
        return dao;
    }

    /**
     * @param aDao the dao to set
     */
    public static void setDao(FacturaCompraDAO aDao) {
        dao = aDao;
    }
}
